package com.gofaraway.service.左神算法课.tree;


/**
 * 相同的树
 * <p>
 * 给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。
 * 如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
 * <p>
 * https://leetcode.cn/problems/same-tree/?envType=study-plan-v2&envId=top-interview-150
 */
public class Code02_SameTree {

    public static class TreeNode {
        public int value;
        public TreeNode left;
        public TreeNode right;

        public TreeNode(int value) {
            this.value = value;
        }
    }

    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null ^ q == null) {
            return false;
        }

        if (p == null && q == null) {
            return true;
        }

        return p.value == q.value && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

}
